/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;

import Beans.BancoBean;
import Conexion.Conexion;
import java.sql.ResultSet;
import java.util.Vector;

/**
 *
 * @author orellana
 */
public class BancoDAO {


    // Atributos de la clase
    public static String INSERT_DATOS_BANCO = "INSERT INTO cat_bancos(nombreBanco, descripcionBanco, fechaAlta, idEstado) VALUES";
    public static String GET_DATOS_BANCO =  "SELECT nombreBanco, descripcionBanco, idBanco FROM cat_bancos WHERE idBanco= ";
    public static String GET_DATOS_BANCOS = "SELECT idBanco, nombreBanco, descripcionBanco FROM cat_bancos WHERE idEstado=1 ORDER BY nombreBanco;";
    public static String GET_ID_BANCO="SELECT auto_increment FROM information_schema.tables WHERE table_schema='bd_pegaso' AND table_name='cat_bancos'";
    public static String DELETE_DATOS_BANCO="UPDATE cat_bancos SET idEstado=2 WHERE ";
    public static String UPDATE_DATOS_BANCO="UPDATE cat_bancos SET";
    public static String GET_DATOS_BANCO_ACTIVOS = "SELECT idBanco, nombreBanco, descripcionBanco FROM cat_bancos WHERE ";
    public static String GET_DATOS_BANCO_COMBO="SELECT nombreBanco,idBanco FROM cat_bancos WHERE idEstado=1";
    public static String GET_NOMBRE_BANCO_ID="SELECT idBanco FROM cat_bancos";

     // Metodos publicos
    // Insertamos los datos de Banco
    public Vector insertDatosBanco (BancoBean bancoBean, Conexion conect){
        // Variables locales
        Vector resultDatos=new Vector();

        // Insertamos los datos de las categorias
        try {
            conect.getPreparedStatement().execute(INSERT_DATOS_BANCO +"('"+bancoBean.getNombreBanco() +"'"+",'"+bancoBean.getDescripcionBanco()+"'"+",NOW()"+",1);");
            resultDatos.add("OK");
        } catch (Exception e) {
            resultDatos.add("ERROR");
            // Mensaje en consola
            System.out.println("Erro: "+e);
        }
        // Retornamos el valor
        return resultDatos;
    }

    // Obtenemos los datos de la categoria
    public Vector getDatosBanco (BancoBean bancoBean, Conexion conect){
    // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos del banco
        try{
        ResultSet resultSet = conect.getPreparedStatement().executeQuery(GET_DATOS_BANCO + bancoBean.getIdBanco() + " AND idEstado=1");
        System.out.println("imprime "+resultSet);
            while (resultSet.next()){
            BancoBean getDatosBanco=new BancoBean();
            getDatosBanco.setNombreBanco(resultSet.getString("nombreBanco"));
            getDatosBanco.setDescripcionBanco(resultSet.getString("descripcionBanco"));
            getDatosBanco.setIdBanco(resultSet.getString("idBanco"));
            resultDatos.add(getDatosBanco);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("ERROR: " +e);
        }
            // Retornamos el valor
            return resultDatos;
    }

    // Obtenemos los datos de la categoria
    public Vector getDatosBancos (BancoBean bancoBean, Conexion conect){
    // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos del banco
        try{
        ResultSet resultSet = conect.getPreparedStatement().executeQuery(GET_DATOS_BANCOS);
        System.out.println("imprime "+resultSet);
            while (resultSet.next()){
            BancoBean getDatosBancos=new BancoBean();
            getDatosBancos.setNombreBanco(resultSet.getString("nombreBanco"));
            getDatosBancos.setDescripcionBanco(resultSet.getString("descripcionBanco"));
            getDatosBancos.setIdBanco(resultSet.getString("idBanco"));
            resultDatos.add(getDatosBancos);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("ERROR: " +e);
        }
            // Retornamos el valor
            return resultDatos;
    }

    // Obtenemos el Proximo Identificador dela banco
    public Vector getIdBanco(BancoBean bancoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos el Identificador dela Categoria
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_ID_BANCO);
            while(resultSet.next()){
                BancoBean getIdBanco=new BancoBean();
                getIdBanco.setIdBanco(resultSet.getString("auto_increment"));
                resultDatos.add(getIdBanco);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :" + e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

     // Eliminamos los Datos de la Categoria (Logica)
    public Vector deleteDatosBanco(BancoBean bancoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Eliminamos los Datos dela categoria
        try {
            conect.getPreparedStatement().execute(DELETE_DATOS_BANCO +
                    "idBanco=" + bancoBean.getIdBanco());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Actualizamos los Datos del banco
    public Vector updateDatosBanco(BancoBean bancoBean,Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Actualizamos los Datos dela categoria
        try {
            conect.getPreparedStatement().execute(UPDATE_DATOS_BANCO +
                    " nombreBanco='" + bancoBean.getNombreBanco() + "'" +
                    ",descripcionBanco='" + bancoBean.getDescripcionBanco() + "'" +
                    ",fechaModificacion=NOW() WHERE idBanco=" + bancoBean.getIdBanco());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Busqueda de bancos Registrados con Estatus Activo (1)
    public Vector buscarDatosBancoActivo(BancoBean bancoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Buscamos los bancos Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_BANCO_ACTIVOS+
                    "nombreBanco LIKE '%" + bancoBean.getNombreBanco()+"%' AND idEstado = 1 ORDER BY nombreBanco");
            while(resultSet.next()){
                BancoBean getDatosBancoActivos=new BancoBean();
                getDatosBancoActivos.setNombreBanco(resultSet.getString("nombreBanco"));
                getDatosBancoActivos.setDescripcionBanco(resultSet.getString("descripcionBanco"));
                getDatosBancoActivos.setIdBanco(resultSet.getString("idBanco"));
                resultDatos.add(getDatosBancoActivos);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Busqueda de banocs Registrados con Estatus Activo (1) para el combo
    public Vector buscarDatosBancoCombo(BancoBean bancoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Buscamos bancos Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_BANCO_COMBO);
            while(resultSet.next()){
                BancoBean getDatosBancoCombo=new BancoBean();
                getDatosBancoCombo.setNombreBanco(resultSet.getString("nombreBanco"));
                getDatosBancoCombo.setIdBanco(resultSet.getString("idBanco"));
                resultDatos.add(getDatosBancoCombo);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos el ID Banco por Nombre
    public Vector getIdBancoNombre(BancoBean bancoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();
//System.out.println("ERROR :"+ GET_NOMBRE_BANCO_ID+
//                    " WHERE nombreBanco = '" + bancoBean.getNombreBanco() + "'");
        // Obtenemos el ID banco por Nombre
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_NOMBRE_BANCO_ID+
                    " WHERE nombreBanco = '" + bancoBean.getNombreBanco() + "'");
             
            while(resultSet.next()){
                BancoBean getDatosBanco=new BancoBean();
                getDatosBanco.setIdBanco(resultSet.getString("idBanco"));
                resultDatos.add(getDatosBanco);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

}
